<!DOCTYPE html>
<html>

<head>
  <title>Quarkus 0.20.0 released</title>
  <script id="adobe_dtm" src="https://www.redhat.com/dtm.js" type="text/javascript"></script>
  <script src="/assets/javascript/highlight.pack.js" type="text/javascript"></script>
  <META HTTP-EQUIV='Content-Security-Policy' CONTENT="default-src 'none'; script-src 'self' 'unsafe-eval' 'sha256-ANpuoVzuSex6VhqpYgsG25OHWVA1I+F6aGU04LoI+5s=' 'sha256-ipy9P/3rZZW06mTLAR0EnXvxSNcnfSDPLDuh3kzbB1w=' js.bizographics.com https://www.redhat.com assets.adobedtm.com jsonip.com https://ajax.googleapis.com https://www.googletagmanager.com https://www.google-analytics.com https://use.fontawesome.com; style-src 'self' https://fonts.googleapis.com https://use.fontawesome.com; img-src 'self' *; media-src 'self' ; frame-src https://www.googletagmanager.com https://www.youtube.com; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; form-action 'none'; font-src 'self' https://use.fontawesome.com https://fonts.gstatic.com;">
  <META HTTP-EQUIV='X-Frame-Options' CONTENT="DENY">
  <META HTTP-EQUIV='X-XSS-Protection' CONTENT="1; mode=block">
  <META HTTP-EQUIV='X-Content-Type-Options' CONTENT="nosniff">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Quarkus: Supersonic Subatomic Java">
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@QuarkusIO"> 
  <meta name="twitter:creator" content="@QuarkusIO">
  <meta property="og:url" content="https://quarkus.io/blog/quarkus-0-20-0-released/" />
  <meta property="og:title" content="Quarkus 0.20.0 released" />
  <meta property="og:description" content="Quarkus: Supersonic Subatomic Java" />
  <meta property="og:image" content="/assets/images/quarkus_card.png" />
  <link rel="canonical" href="https://quarkus.io/blog/quarkus-0-20-0-released/">
  <link rel="shortcut icon" type="image/png" href="/favicon.ico" >
  <link rel="stylesheet" href="https://quarkus.io/guides/stylesheet/config.css" />
  <link rel="stylesheet" href="/assets/css/main.css" />
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
  <link rel="alternate" type="application/rss+xml"  href="https://quarkus.io/feed.xml" title="Quarkus">
  <script src="https://quarkus.io/assets/javascript/goan.js" type="text/javascript"></script>
  <script src="https://quarkus.io/assets/javascript/hl.js" type="text/javascript"></script>
</head>

<body class="post">
  <!-- Google Tag Manager (noscript) -->
  <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJWS5L"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  <!-- End Google Tag Manager (noscript) -->

  <div class="nav-wrapper">
  <div class="grid-wrapper">
    <div class="width-12-12">
      <input type="checkbox" id="checkbox" />
      <nav id="main-nav" class="main-nav">
  <div class="container">
    <div class="logo-wrapper">
      
        <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_600px_reverse.png" class="project-logo" title="Quarkus"></a>
      
    </div>
    <label class="nav-toggle" for="checkbox">
      <i class="fa fa-bars"></i>
    </label>
    <div id="menu" class="menu">
      <span>
        <a href="/get-started/" class="">Get Started</a>
      </span>
      <span>
        <a href="/guides/" class="">Guides</a>
      </span>
      <span>
        <a href="/community/" class="">Community</a>
      </span>
      <span>
        <a href="/support/" class="">Support</a>
      </span>
      <span>
        <a href="/blog/" class="active">Blog</a>
      </span>
      <span>
        <a href="https://code.quarkus.io" class="button-cta secondary white">Start Coding</a>
      </span>
    </div>
  </div>
      </nav>
    </div>
  </div>
</div>

  <div class="content">
    <div class="post-page grid-wrapper">
  <div class="width-8-12 width-12-12-m doc-content">
    <div class="grid-wrapper">
      <div class="width-12-12">
        <p>
          <a href="/blog"><i class="fas fa-angle-left"></i> Back to all posts</a>
        </p>
      </div>
      <div class="width-12-12">
        <div class="post-date">
          July 31, 2019 
          
            <span class="tags"><a href="/blog/tag/release">#release</a></span>
          
        </div>
        <h1 class="post-title">Quarkus 0.20.0 released</h1>
        <div class="grid-wrapper">
          <div class="width-8-12 width-12-12-m byline-wrapper">
            
            
              <img class="headshot" src="https://www.gravatar.com/avatar/ec96387a1a8295b6fd6dffb68f80c352">
            
            <p class="byline">By Guillaume Smet</p>
          </div>
          <div class="width-12-12">
              <div class="paragraph">
<p>We just released Quarkus 0.20.0.</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
<div class="paragraph">
<p>If you use Quarkus with GraalVM to build native executables, Quarkus 0.20.0 now requires GraalVM 19.1.1 so please upgrade your GraalVM installation.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="sect1">
<h2 id="whats-new"><a class="anchor" href="#whats-new"></a>What&#8217;s new?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Here are the main highlights of this release: Jackson extensions, OAuth2 extension, Camel extensions moved outside the Quarkus tree, a new MicroProfile REST Client implementation, Syslog support and a new guide for Azure deployments.</p>
</div>
<div class="sect2">
<h3 id="hibernate-orm-multi-line-support-in-import-scripts"><a class="anchor" href="#hibernate-orm-multi-line-support-in-import-scripts"></a>Hibernate ORM multi-line support in import scripts</h3>
<div class="paragraph">
<p>We enabled multi-line support for the Hibernate ORM import scripts (typically <code>import.sql</code>).</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
<div class="paragraph">
<p>You need to add semi-colons (i.e. <code>;</code>) at the end of your SQL statements in your existing import scripts.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="improved-integration-of-hibernate-validator-with-cdi"><a class="anchor" href="#improved-integration-of-hibernate-validator-with-cdi"></a>Improved integration of Hibernate Validator with CDI</h3>
<div class="paragraph">
<p>Hibernate Validator is now fully integrated with CDI in Quarkus. You can even tweak the <code>ValidatorFactory</code> just by declaring beans in your applications. Just have a look at <a href="/guides/validation#going-further">the updated documentation</a> to learn more about it.</p>
</div>
</div>
<div class="sect2">
<h3 id="new-microprofile-rest-client-implementation"><a class="anchor" href="#new-microprofile-rest-client-implementation"></a>New MicroProfile REST Client implementation</h3>
<div class="paragraph">
<p>In this release we&#8217;ve switched from using SmallRye REST Client to RESTEasy as an implementation of MicroProfile REST Client. As the MicroProfile REST Client builds on top of functionality that is already present within the JAX-RS Client and the RESTEasy Client, it made sense for us to combine all the clients into the RESTEasy project.</p>
</div>
<div class="paragraph">
<p>This change also brings the REST Client implementation in Quarkus up to date with the latest MicroProfile REST Client specification, version 1.3, that is part of the latest MicroProfile 3.0 platform release. Some of the new features in the release include support for SSL configuration of a client, making JSON the default <code>MediaType</code> if there is not one specified by <code>@Produces</code> or <code>@Consumes</code>, and easier configuration with config keys to enable setting common configuration across multiple client interfaces.</p>
</div>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
<div class="paragraph">
<p>The GAV of the REST client has changed: please use <code>io.quarkus:quarkus-rest-client</code> from now on.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="upgrade-to-microprofile-metrics-2-0"><a class="anchor" href="#upgrade-to-microprofile-metrics-2-0"></a>Upgrade to MicroProfile Metrics 2.0</h3>
<div class="paragraph">
<p>We upgraded Quarkus to MicroProfile Metrics 2.0. The main difference is that <code>@Counted</code> is now always monotonic. If you need the behavior previously triggered by <code>monotonic = false</code>, use a <code>@ConcurrentGauge</code>.</p>
</div>
</div>
<div class="sect2">
<h3 id="configuring-a-per-method-transaction-timeout"><a class="anchor" href="#configuring-a-per-method-transaction-timeout"></a>Configuring a per method transaction timeout</h3>
<div class="paragraph">
<p>You can now configure the transaction timeout of a specific transactional method using the <code>@TransactionConfiguration</code> annotation. Please refer to <a href="/guides/transaction#transaction-configuration">our Transaction guide</a> for more information.</p>
</div>
</div>
<div class="sect2">
<h3 id="syslog-support-for-logging"><a class="anchor" href="#syslog-support-for-logging"></a>Syslog support for logging</h3>
<div class="paragraph">
<p>Quarkus now supports shipping the logs to Syslog. Please refer to <a href="/guides/logging#syslog-configuration">our updated logging documentation</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="new-extensions"><a class="anchor" href="#new-extensions"></a>New extensions</h3>
<div class="sect3">
<h4 id="jackson-extensions"><a class="anchor" href="#jackson-extensions"></a>Jackson extensions</h4>
<div class="paragraph">
<p>Quarkus loves standards.
That&#8217;s why we started by supporting JSON-B as our JSON serialization library.</p>
</div>
<div class="paragraph">
<p>We had a lot of users asking for Jackson support and, while you could use Jackson with Quarkus, it wasn&#8217;t as easy as for JSON-B.</p>
</div>
<div class="paragraph">
<p>We just added two new extensions to make Jackson a first class citizen in Quarkus:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>quarkus-jackson</code> for standalone usage of Jackson</p>
</li>
<li>
<p><code>quarkus-resteasy-jackson</code> to use Jackson for your REST services</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="oauth2-extension"><a class="anchor" href="#oauth2-extension"></a>OAuth2 extension</h4>
<div class="paragraph">
<p>The new Security OAuth2 extension allows to implement an authentication mechanism based on OAuth2 opaque tokens.
It complements the existing JWT extension by allowing to authenticate a user based on a call to an introspection endpoint instead of decoding the token.
An opaque token is a token with no information encoded in it, so it needs an external call to gather the user information, this external call is made against what is called an introspection endpoint.</p>
</div>
<div class="paragraph">
<p>Behind the scenes, it relies on Elytron and leverages the same annotations as the other security extensions, so it&#8217;s as easy to use as the other authentication mechanisms that Quarkus supports, and a user can easily switch between them.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>If you have Keycloak as your authentication server, better use the Keycloak extension.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect2">
<h3 id="camel-extensions-moved-outside-of-the-main-quarkus-tree"><a class="anchor" href="#camel-extensions-moved-outside-of-the-main-quarkus-tree"></a>Camel extensions moved outside of the main Quarkus tree</h3>
<div class="paragraph">
<p>From Quarkus 0.20.0, the Apache Camel extensions will have a new home at the Apache Software Foundation as an official Apache Camel subproject.
The extensions have been moved to <a href="https://github.com/apache/camel-quarkus" class="bare">https://github.com/apache/camel-quarkus</a> and the Maven group ID is now org.apache.camel.quarkus: you can list the available artifacts
<a href="https://search.maven.org/search?q=g:org.apache.camel.quarkus">here</a>.</p>
</div>
<div class="paragraph">
<p>The first Camel-Quarkus release is the 0.0.2, based on Camel 3.0.0-M2 and Quarkus 0.19.1.
The Apache Camel team is working on a new release with more extensions based on the available Camel components, supporting the latest Camel 3.0.0 Milestone Release (Milestone 4 for completeness) and based on Quarkus 0.20.0 and GraalVM 19.1.</p>
</div>
<div class="paragraph">
<p>For contributions, improvements and discussions you can reach the Apache Camel team <a href="https://github.com/apache/camel-quarkus/">on Github</a>, <a href="https://gitter.im/apache/camel-quarkus">on Gitter</a> and <a href="https://camel.apache.org/staging/community/mailing-list/">on the usual mailing lists</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="deploying-quarkus-on-azure"><a class="anchor" href="#deploying-quarkus-on-azure"></a>Deploying Quarkus on Azure</h3>
<div class="paragraph">
<p>We have <a href="https://quarkus.io/guides/deploying-to-azure-cloud">a new guide covering the deployment of Quarkus applications to Microsoft Azure Cloud</a>. If you want to deploy Quarkus applications on Azure, please take a look at it.</p>
</div>
</div>
<div class="sect2">
<h3 id="full-changelog"><a class="anchor" href="#full-changelog"></a>Full changelog</h3>
<div class="paragraph">
<p>We also fixed some issues and merged a lot of improvements all over the place.</p>
</div>
<div class="paragraph">
<p>You can find <a href="https://github.com/quarkusio/quarkus/releases/tag/0.20.0">the full changelog on GitHub</a>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="contributors"><a class="anchor" href="#contributors"></a>Contributors</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Quarkus has now <a href="https://github.com/quarkusio/quarkus/graphs/contributors">125 contributors</a>.
Many many thanks to each and everyone of them.</p>
</div>
<div class="paragraph">
<p>In particular for this release, thanks to Alessio Soldano, Alex Soto, Alexey Loubyansky, Aleš Justin, Aris Tzoum, Bruno Borges, Cristhian Lopez, Clement Escoffier, David M. Lloyd, Edoardo Vacchi, Emmanuel Bernard, Fabrice Pipart, Frank de Jong, George Gastaldi, Georgios Andrianakis, Guillaume Dufour, Guillaume Smet, Gwenneg Lepage, Jacob Middag, Jan Martiska, Jeremie Bresson, Jirka Kremser, Justin Lee, Ken Finnigan, Loïc Mathieu, Łukasz Włódarczyk, Maciej Swiderski, Manyanda Chitimbo, Marco Mornati, Mario Fusco, Martin Kouba, Matej Novotny, Michael Simons, Michal Szynkiewicz, Moncef Aoudia, Peter Palaga, Rostislav Svoboda, Sanne Grinovero, Sébastien Blanc, Sergey Beryozkin, Stephane Epardaud, Stuart Douglas and Timothy Power.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="come-join-us"><a class="anchor" href="#come-join-us"></a>Come Join Us</h2>
<div class="sectionbody">
<div class="paragraph">
<p>We value your feedback a lot so please report bugs, ask for improvements&#8230;&#8203; Let&#8217;s build something great together!</p>
</div>
<div class="paragraph">
<p>If you are a Quarkus user or just curious, don&#8217;t be shy and join our welcoming community:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>provide feedback on <a href="https://github.com/quarkusio/quarkus/issues">GitHub</a>;</p>
</li>
<li>
<p>craft some code and <a href="https://github.com/quarkusio/quarkus/pulls">push a PR</a>;</p>
</li>
<li>
<p>discuss with us on <a href="https://quarkusio.zulipchat.com/">Zulip</a> and on the <a href="https://groups.google.com/d/forum/quarkus-dev">mailing list</a>;</p>
</li>
<li>
<p>ask your questions on <a href="https://stackoverflow.com/questions/tagged/quarkus">Stack Overflow</a>.</p>
</li>
</ul>
</div>
</div>
</div>
              
          </div>
          <div class="width-12-12"><div class="share-page">
  <a class="share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://quarkus.io/blog/quarkus-0-20-0-released/&title=Quarkus 0.20.0 released" rel="nofollow" target="_blank" title="Share on LinkedIn">
    <img src="/assets/images/share-page/icons_social-linkedin.png"/>
  </a>
  <a class="share-twitter" href="https://twitter.com/intent/tweet?text=Quarkus 0.20.0 released&url=https://quarkus.io/blog/quarkus-0-20-0-released/&via=quarkusio&related=quarkusio" rel="nofollow" target="_blank" title="Share on Twitter">
    <img src="/assets/images/share-page/icons_social-twitter.png"/>
  </a>
  <a class="share-facebook" href="https://facebook.com/sharer.php?u=https://quarkus.io/blog/quarkus-0-20-0-released/" rel="nofollow" target="_blank" title="Share on Facebook">
    <img src="/assets/images/share-page/icons_social-facebook.png"/>
  </a>
  <a class="share-reddit" href="http://www.reddit.com/submit?url=https://quarkus.io/blog/quarkus-0-20-0-released/" onclick="window.open(this.href, 'pop-up', 'left=20,top=20,width=900,height=500,toolbar=1,resizable=0'); return false;" title="Share on Reddit" >
    <img src="/assets/images/share-page/icons_social-reddit.png"/>
  </a>
  <a class="share-email" href="mailto:?subject=Quarkus 0.20.0 released&amp;body=Quarkus 0.20.0 released https://quarkus.io/blog/quarkus-0-20-0-released/" title="Share via Email" >
    <img src="/assets/images/share-page/icons_social-email.png"/>
  </a>
</div>
</div>
        </div>
      </div>
    </div>
  </div>
</div>

  </div>

  <div class="content project-footer">
  <div class="footer-section">
    <div class="logo-wrapper">
      <a href="/"><img src="/assets/images/quarkus_logo_horizontal_rgb_reverse.svg" class="project-logo" title="Quarkus"></a>
    </div>
  </div>
  <div class="grid-wrapper">
    <p class="grid__item width-3-12">Quarkus is open. All dependencies of this project are available under the <a href='https://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache Software License 2.0</a> or compatible license.<br /><br />This website was built with <a href='https://jekyllrb.com/' target='_blank'>Jekyll</a>, is hosted on <a href='https://pages.github.com/' target='_blank'>Github Pages</a> and is completely open source. If you want to make it better, <a href='https://github.com/quarkusio/quarkusio.github.io' target='_blank'>fork the website</a> and show us what you’ve got.</p>

    
      <div class="width-1-12 project-links">
        <span>Navigation</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="/">Home</a></li>
          
            <li><a href="/guides">Guides</a></li>
          
            <li><a href="/community/#contributing">Contribute</a></li>
          
            <li><a href="/faq">FAQ</a></li>
          
            <li><a href="/get-started">Get Started</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Contribute</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://twitter.com/quarkusio">Follow us</a></li>
          
            <li><a href="https://github.com/quarkusio">GitHub</a></li>
          
            <li><a href="/security">Security&nbsp;policy</a></li>
          
        </ul>
      </div>
    
      <div class="width-1-12 project-links">
        <span>Get Help</span>
        <ul class="footer-links width-1-12">
          
            <li><a href="https://groups.google.com/forum/#!forum/quarkus-dev">Forums</a></li>
          
            <li><a href="https://quarkusio.zulipchat.com">Chatroom</a></li>
          
        </ul>
      </div>
    

    
      <div class="width-3-12 more-links">
        <span>Quarkus is made of community projects</span>
        <ul class="footer-links">
          
            <li><a href="https://vertx.io/" target="_blank">Eclipse Vert.x</a></li>
          
            <li><a href="https://microprofile.io" target="_blank">Eclipse MicroProfile</a></li>
          
            <li><a href="https://hibernate.org" target="_blank">Hibernate</a></li>
          
            <li><a href="https://netty.io" target="_blank">Netty</a></li>
          
            <li><a href="https://resteasy.github.io" target="_blank">RESTEasy</a></li>
          
            <li><a href="https://camel.apache.org" target="_blank">Apache Camel</a></li>
          
            <li><a href="https://code.quarkus.io/" target="_blank">And many more...</a></li>
          
        </ul>
      </div>
    
  </div>
</div>
  <div class="content redhat-footer">
  <div class="grid-wrapper">
    <span class="licence">
      <i class="fab fa-creative-commons"></i><i class="fab fa-creative-commons-by"></i> <a href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC by 3.0</a> | <a href="https://www.redhat.com/en/about/privacy-policy">Privacy Policy</a>
    </span>
    <span class="redhat">
      Sponsored by
    </span>
    <span class="redhat-logo">
      <a href="https://www.redhat.com/" target="_blank"><img src="/assets/images/redhat_reversed.svg"></a>
    </span>
  </div>
</div>


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" integrity="sha384-8gBf6Y4YYq7Jx97PIqmTwLPin4hxIzQw5aDmUg/DDhul9fFpbbLcLh3nTIIDJKhx" crossorigin="anonymous"></script>
  <script type="text/javascript" src="/assets/javascript/mobile-nav.js"></script>
  <script type="text/javascript" src="/assets/javascript/scroll-down.js"></script>
  <script src="/assets/javascript/satellite.js" type="text/javascript"></script>
  <script src="https://quarkus.io/guides/javascript/config.js" type="text/javascript"></script>
  <script src="/assets/javascript/search-filter.js" type="text/javascript"></script>
  <script src="/assets/javascript/back-to-top.js" type="text/javascript"></script>
</body>

</html>
